# 2024年6月4日13:32:42  开始学习 - 自动寻找蓝图并注册

import sys
from flask import Blueprint, Flask
import pkgutil


__import__("test3")  # 等价于 import test3

module = sys.modules["test3"]  # 获取test3 模块
print(module.a)  # 打印模块中的变量 # 等价于 test3.a

print(module)
print(dir(module))  # 返回模块中的类、属性、方法 # 等价于 dir(test3)

for i in dir(module):
    var = getattr(module, i)
    if isinstance(var, Blueprint):  # 找到蓝图并打印
        print(var)

import apps

# print(apps.__path__)  # 列出模块的路径 # ['D:\\2024\\pythonCode\\api_backend\\apps']
print(apps.__name__)  # 模块名 apps

app = Flask(__name__)

# 递归列出apps模块路径下的，所有apps开头的包和模块
for filefinder, name, ispkg in pkgutil.walk_packages(apps.__path__, apps.__name__ + "."):
    if str(name).endswith("_view"):  # 找出_view结尾的模块
        print(name)
        # apps.student.view.student_view
        # apps.user.view.user_view
        __import__(name)  # 引入模块

        module = sys.modules[name]  # 获取模块
        for i in dir(module):  # dir()列出模块中的类、方法、变量，进行遍历
            var = getattr(module, i)  # 获取变量
            if isinstance(var, Blueprint):  # 找到蓝图进行注册
                app.register_blueprint(var)

# 自动寻找蓝图并注册
# 学习结束 2024年6月4日14:58:24

app.run()